﻿using System.ComponentModel;
using CozeDomain.Base;
using FreeSql.DataAnnotations;

namespace CozeDomain.Entities
{
    /// <summary>
    /// 项目模型
    /// </summary>
    [Table(Name = "Project")]
    [Description("项目模型")]
    public class ProjectEntity : BaseEntity
    {
        /// <summary>
        /// 项目名称
        /// </summary>
        [Column(DbType = "varchar", StringLength = 18, IsNullable = false)]
        [Description("项目名称")]
        public string? Name { get; set; }

        /// <summary>
        /// 图标
        /// </summary>
        [Column(DbType = "mediumtext", IsNullable = true)]
        [Description("图标")]
        public string? Icon { get; set; }

        /// <summary>
        /// 标记
        /// </summary>
        [Column(DbType = "varchar", StringLength = 20, IsNullable = false)]
        [Description("标记")]
        public string? Flag { get; set; }

        /// <summary>
        /// 项目类别，字典表加载
        /// </summary>
        [Column(DbType = "varchar", StringLength = 30, IsNullable = false)]
        [Description("项目类别，字典表加载")]
        public string? Category { get; set; }

        /// <summary>
        /// 所属用户（系统，用户）
        /// </summary>
        [Column(DbType = "varchar", StringLength = 10, IsNullable = false)]
        [Description("所属用户（系统，用户）")]
        public string? Source { get; set; }

        /// <summary>
        /// 项目类型（智能体、工作流）
        /// </summary>
        [Column(DbType = "varchar", StringLength = 20, IsNullable = false)]
        [Description("项目类型（智能体、工作流）")]
        public string? ProjectType { get; set; }
         
        /// <summary>
        /// 智能体-ID
        /// </summary>
        [Column(DbType = "varchar", StringLength = 50, IsNullable = false)]
        [Description("智能体-ID")]
        public string? BotId { get; set; }

        /// <summary>
        /// 智能体-认证方式（个人访问令牌，Oauth应用）
        /// </summary>
        [Column(DbType = "varchar", StringLength = 20, IsNullable = false)]
        [Description("智能体-认证方式（个人访问令牌，Oauth应用）")]
        public string? Method { get; set; }

        /// <summary>
        /// 智能体-Oauth应用-公钥
        /// </summary>
        [Column(DbType = "varchar", StringLength = 300, IsNullable = false)]
        [Description("智能体-Oauth应用-公钥")]
        public string? PublickKey { get; set; }

        /// <summary>
        /// 智能体-Oauth应用-私钥
        /// </summary>
        [Column(DbType = "mediumtext",  IsNullable = true)]
        [Description("智能体-Oauth应用-私钥")]
        public string? PrivateKey { get; set; }

        /// <summary>
        /// 智能体-个人访问令牌-令牌
        /// </summary>
        [Column(DbType = "varchar", StringLength = 200, IsNullable = true)]
        [Description("智能体-个人访问令牌-令牌")]
        public string? Token { get; set; }

        /// <summary>
        /// 工作流-预设指令
        /// </summary>
        [Column(DbType = "varchar", StringLength = 200, IsNullable = true)]
        [Description("工作流-预设指令")]
        public string? Instruction { get; set; }

        /// <summary>
        /// 工作流-示例内容
        /// </summary>
        [Column(DbType = "varchar", StringLength = 200, IsNullable = true)]
        [Description("工作流-示例内容")]
        public string? Example { get; set; }

        /// <summary>
        /// 单次价格
        /// </summary>
        [Column(DbType = "double", StringLength = 18, IsNullable = true)]
        [Description("单次价格")]
        public double? SinglePrice { get; set; }

        /// <summary>
        /// 体验价格
        /// </summary>
        [Column(DbType = "double", StringLength = 18, IsNullable = true)]
        [Description("体验价格")]
        public double? ExperiencePrice { get; set; }

        /// <summary>
        /// 月卡价格
        /// </summary>
        [Column(DbType = "double", StringLength = 18, IsNullable = true)]
        [Description("月卡价格")]
        public double? MonthlyCardPrice { get; set; }

        /// <summary>
        /// 作用
        /// </summary>
        [Column(DbType = "varchar", StringLength = 500, IsNullable = true)]
        [Description("作用")]
        public string? Features { get; set; }

        /// <summary>
        /// 描述
        /// </summary>
        [Column(DbType = "varchar", StringLength = 500, IsNullable = true)]
        [Description("描述")]
        public string? Description { get; set; }

        /// <summary>
        /// 状态
        /// </summary>
        [Column(DbType = "bit", IsNullable = false)]
        [Description("状态")]
        public bool? Status { get; set; }

    }
}
